Return Home

Return to Python Projects Page

The Development Application Register City of Playford Exploratory Data Analysis¶

Datasource : https://data.sa.gov.au/data/dataset/development-application-register/resource/7158ab0d-438f-48cf-baa4-0653b153fe76

In [2]:
# Load in some packages
import calendar
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")


register_df = pd.read_csv(r"C:\Users\jki\Downloads\The Development Application Register.csv") 
register_df.head(5)
Out[2]:
ApplicationNumber LodgementDate ApplicantName ApplicantAddressLine1 ApplicantAddressLine2 ApplicantAddressLine3 ApplicantAddressLine4 ApplicationDesc ApplicationType PropertyAddress ... CommenceDate CompleteDate UADecs Referrals ContaminationNotice CertifierLodgementDates ValueOfDevelopment AppDescr NumDwellings VgNumber
0 2921/2020 2/01/2020 12:00:00 AM Inspire Design Studio Inspire Design Studio 15b King William Street KENT TOWN SA 5067 NaN Construction of a detached dwelling with attac... Planning and Building Application 7B Leonard Street ... 24/04/2020 5:02:25 PM NaN NaN NaN NaN 160000.0 Construction of a detached dwelling with attac... 2 324823201*
1 2922/2020 2/01/2020 12:00:00 AM Prestige Pools SA Pty Ltd Prestige Pools SA Pty Ltd 516 Western Branch Road WOODSIDE SA 5244 NaN Construction of a swimming pool with associate... Planning and Building Application 1 Edmund Avenue ... 10/08/2020 12:00:27 PM 11/05/2020 8:50:14 AM NaN NaN NaN NaN 22590.0 Construction of a swimming pool with associate... 0 2900561443
2 2923/2020 2/01/2020 12:00:00 AM Inspire Design Studio Inspire Design Studio 15b King William Street KENT TOWN SA 5067 NaN Construction of a detached dwelling with attac... Planning and Building Application 7A Leonard Street ... 9/04/2021 3:35:25 PM NaN NaN NaN NaN 160000.0 Construction of a detached dwelling with attac... 2 3248232116
3 292171/2019/1/A 2/01/2020 12:00:00 AM Adelaide Nominees Pty Ltd Adelaide Nominees Pty Ltd C/- Ekistics PO Box 32 GOODWOOD SA 5034 Variation to authorisation previously granted ... New Application Lodgement 107 Womma Road ... 3/02/2020 12:00:00 AM NaN NaN NaN NaN 1500000.0 Variation to authorisation previously granted ... 0 NaN
4 2924/2020 2/01/2020 12:00:00 AM Ms N M French Ms N M French 14 Charlson Street DAVOREN PARK SA 5113 NaN Construction of a domestic out building - sch 1a Building Application Only 14 Charlson Street ... 18/06/2020 12:33:37 PM NaN NaN NaN NaN NaN 1700.0 Construction of a domestic out building - sch 1a 0 2909828028

5 rows × 36 columns

After getting a sense of the data's structure, it is a good idea to look at a statistical summary of the variables with df.describe()

In [3]:
register_df.describe()
Out[3]:
Fees WorkCommencementDate PrivateCertAppDates UADecs Referrals ValueOfDevelopment NumDwellings
count 4067.000000 0.0 0.0 0.0 0.0 3.546000e+03 4067.000000
mean 385.014537 NaN NaN NaN NaN 3.155933e+05 0.386034
std 953.844863 NaN NaN NaN NaN 2.602688e+06 9.670009
min 0.000000 NaN NaN NaN NaN 0.000000e+00 0.000000
25% 145.500000 NaN NaN NaN NaN 1.010250e+04 0.000000
50% 323.500000 NaN NaN NaN NaN 1.682005e+05 0.000000
75% 478.120000 NaN NaN NaN NaN 2.209675e+05 0.000000
max 26261.500000 NaN NaN NaN NaN 1.043515e+08 615.000000
In [4]:
# lets  check for missing 
missing_values =  register_df.isna().sum()
print(missing_values)
ApplicationNumber                 0
LodgementDate                     0
ApplicantName                    10
ApplicantAddressLine1            10
ApplicantAddressLine2            10
ApplicantAddressLine3            14
ApplicantAddressLine4          3462
ApplicationDesc                   0
ApplicationType                   0
PropertyAddress                  23
PropertySuburbPostCode           23
PrivateCertifierName           3991
PrivateCertiferAddressLine1    3991
PrivateCertiferAddressLine2    3991
PrivateCertiferAddressLine3    3991
PrivateCertiferAddressLine4    3994
Decision                          0
ApprovalDate                    637
Authority                       567
ApprovalConditions                0
Fees                              0
WorkCommencementDate           4067
Application_Date                  0
Consents                        241
BuildingCertifiers             1985
PrivateCertAppDates            4067
CommenceDate                   1806
CompleteDate                   2734
UADecs                         4067
Referrals                      4067
ContaminationNotice            4066
CertifierLodgementDates        1440
ValueOfDevelopment              521
AppDescr                          0
NumDwellings                      0
VgNumber                        502
dtype: int64
In [23]:
# Define columns with missing values
columns_with_missing = ["ApplicantName", "ApprovalDate", "CommenceDate","ValueOfDevelopment",'CompleteDate']

# Drop rows with missing values in specified columns
register_df.dropna(subset=columns_with_missing, inplace=True)

# lets  check for missing 
missing_values =  register_df.isna().sum()
print(missing_values)
ApplicationNumber                 0
LodgementDate                     0
ApplicantName                     0
ApplicationDesc                   0
ApplicationType                   0
PrivateCertifierName           1238
PrivateCertiferAddressLine1    1238
PrivateCertiferAddressLine3    1238
PrivateCertiferAddressLine4    1238
Decision                          0
ApprovalDate                      0
Authority                         3
ApprovalConditions                0
Fees                              0
WorkCommencementDate           1238
Application_Date                  0
Consents                          0
BuildingCertifiers              173
PrivateCertAppDates            1238
CommenceDate                      0
CompleteDate                      0
ValueOfDevelopment                0
NumDwellings                      0
dtype: int64
In [24]:
# lets check on data types
register_df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1238 entries, 1 to 3974
Data columns (total 23 columns):
 #   Column                       Non-Null Count  Dtype         
---  ------                       --------------  -----         
 0   ApplicationNumber            1238 non-null   object        
 1   LodgementDate                1238 non-null   object        
 2   ApplicantName                1238 non-null   object        
 3   ApplicationDesc              1238 non-null   object        
 4   ApplicationType              1238 non-null   object        
 5   PrivateCertifierName         0 non-null      object        
 6   PrivateCertiferAddressLine1  0 non-null      object        
 7   PrivateCertiferAddressLine3  0 non-null      object        
 8   PrivateCertiferAddressLine4  0 non-null      object        
 9   Decision                     1238 non-null   object        
 10  ApprovalDate                 1238 non-null   datetime64[ns]
 11  Authority                    1235 non-null   object        
 12  ApprovalConditions           1238 non-null   object        
 13  Fees                         1238 non-null   float64       
 14  WorkCommencementDate         0 non-null      float64       
 15  Application_Date             1238 non-null   datetime64[ns]
 16  Consents                     1238 non-null   object        
 17  BuildingCertifiers           1065 non-null   object        
 18  PrivateCertAppDates          0 non-null      float64       
 19  CommenceDate                 1238 non-null   datetime64[ns]
 20  CompleteDate                 1238 non-null   object        
 21  ValueOfDevelopment           1238 non-null   float64       
 22  NumDwellings                 1238 non-null   int64         
dtypes: datetime64[ns](3), float64(4), int64(1), object(15)
memory usage: 232.1+ KB
In [25]:
# let change the data types relevant for analysis

register_df['Application_Date'] = pd.to_datetime(register_df['Application_Date'])
register_df['ApprovalDate'] = pd.to_datetime(register_df['ApprovalDate'])
register_df['CommenceDate'] = pd.to_datetime(register_df['CommenceDate'])

register_df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1238 entries, 1 to 3974
Data columns (total 23 columns):
 #   Column                       Non-Null Count  Dtype         
---  ------                       --------------  -----         
 0   ApplicationNumber            1238 non-null   object        
 1   LodgementDate                1238 non-null   object        
 2   ApplicantName                1238 non-null   object        
 3   ApplicationDesc              1238 non-null   object        
 4   ApplicationType              1238 non-null   object        
 5   PrivateCertifierName         0 non-null      object        
 6   PrivateCertiferAddressLine1  0 non-null      object        
 7   PrivateCertiferAddressLine3  0 non-null      object        
 8   PrivateCertiferAddressLine4  0 non-null      object        
 9   Decision                     1238 non-null   object        
 10  ApprovalDate                 1238 non-null   datetime64[ns]
 11  Authority                    1235 non-null   object        
 12  ApprovalConditions           1238 non-null   object        
 13  Fees                         1238 non-null   float64       
 14  WorkCommencementDate         0 non-null      float64       
 15  Application_Date             1238 non-null   datetime64[ns]
 16  Consents                     1238 non-null   object        
 17  BuildingCertifiers           1065 non-null   object        
 18  PrivateCertAppDates          0 non-null      float64       
 19  CommenceDate                 1238 non-null   datetime64[ns]
 20  CompleteDate                 1238 non-null   object        
 21  ValueOfDevelopment           1238 non-null   float64       
 22  NumDwellings                 1238 non-null   int64         
dtypes: datetime64[ns](3), float64(4), int64(1), object(15)
memory usage: 232.1+ KB
In [34]:
register_df.head(2)
Out[34]:
ApplicationNumber LodgementDate ApplicantName ApplicationDesc ApplicationType PrivateCertifierName PrivateCertiferAddressLine1 PrivateCertiferAddressLine3 PrivateCertiferAddressLine4 Decision ... Fees WorkCommencementDate Application_Date Consents BuildingCertifiers PrivateCertAppDates CommenceDate CompleteDate ValueOfDevelopment NumDwellings
1 2922/2020 2/01/2020 12:00:00 AM Prestige Pools SA Pty Ltd Construction of a swimming pool with associate... Planning and Building Application NaN NaN NaN NaN Development Application Approved ... ... 529.5 NaN 2020-02-01 Development Plan Consent Granted (04/02/2020),... NaN NaN 2020-10-08 12:00:27 11/05/2020 8:50:14 AM 22590.0 0
8 2928/2020 3/01/2020 12:00:00 AM Mr A M Alimi Demolition of a garage and construction of a g... Building Application Only NaN NaN NaN NaN Development Application Approved ... ... 198.0 NaN 2020-03-01 Private Certified Building Rules Consent Grant... Salisbury Development Services NaN 2020-02-14 11:53:21 4/03/2020 3:44:52 PM 9000.0 0

2 rows × 23 columns

In [35]:
# List of columns to drop
columns_to_drop = ['PrivateCertifierName', 'PrivateCertiferAddressLine1','PrivateCertiferAddressLine3','PrivateCertiferAddressLine4']

# Dropping unwanted columns
register_df = register_df.drop(columns=columns_to_drop)
In [36]:
register_df.head(2)
Out[36]:
ApplicationNumber LodgementDate ApplicantName ApplicationDesc ApplicationType Decision ApprovalDate Authority ApprovalConditions Fees WorkCommencementDate Application_Date Consents BuildingCertifiers PrivateCertAppDates CommenceDate CompleteDate ValueOfDevelopment NumDwellings
1 2922/2020 2/01/2020 12:00:00 AM Prestige Pools SA Pty Ltd Construction of a swimming pool with associate... Planning and Building Application Development Application Approved ... 2020-07-04 14:17:10 Council ... Sub-report here 529.5 NaN 2020-02-01 Development Plan Consent Granted (04/02/2020),... NaN NaN 2020-10-08 12:00:27 11/05/2020 8:50:14 AM 22590.0 0
8 2928/2020 3/01/2020 12:00:00 AM Mr A M Alimi Demolition of a garage and construction of a g... Building Application Only Development Application Approved ... 2020-03-01 11:20:33 Council ... Sub-report here 198.0 NaN 2020-03-01 Private Certified Building Rules Consent Grant... Salisbury Development Services NaN 2020-02-14 11:53:21 4/03/2020 3:44:52 PM 9000.0 0
In [37]:
# List of columns to drop
columns_to_drop = ['BuildingCertifiers', 'PrivateCertAppDates']

# Dropping unwanted columns
register_df = register_df.drop(columns=columns_to_drop)
In [38]:
register_df.head(2)
Out[38]:
ApplicationNumber LodgementDate ApplicantName ApplicationDesc ApplicationType Decision ApprovalDate Authority ApprovalConditions Fees WorkCommencementDate Application_Date Consents CommenceDate CompleteDate ValueOfDevelopment NumDwellings
1 2922/2020 2/01/2020 12:00:00 AM Prestige Pools SA Pty Ltd Construction of a swimming pool with associate... Planning and Building Application Development Application Approved ... 2020-07-04 14:17:10 Council ... Sub-report here 529.5 NaN 2020-02-01 Development Plan Consent Granted (04/02/2020),... 2020-10-08 12:00:27 11/05/2020 8:50:14 AM 22590.0 0
8 2928/2020 3/01/2020 12:00:00 AM Mr A M Alimi Demolition of a garage and construction of a g... Building Application Only Development Application Approved ... 2020-03-01 11:20:33 Council ... Sub-report here 198.0 NaN 2020-03-01 Private Certified Building Rules Consent Grant... 2020-02-14 11:53:21 4/03/2020 3:44:52 PM 9000.0 0
In [41]:
# # Let's create a new variable, Month, from 'Order Date':

register_df['Approval Months'] = register_df['ApprovalDate'].dt.month
register_df['Approval Months'].describe()
Out[41]:
count    1238.000000
mean        6.087237
std         3.687750
min         1.000000
25%         3.000000
50%         6.000000
75%        10.000000
max        12.000000
Name: Approval Months, dtype: float64
In [42]:
register_df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1238 entries, 1 to 3974
Data columns (total 19 columns):
 #   Column                Non-Null Count  Dtype         
---  ------                --------------  -----         
 0   ApplicationNumber     1238 non-null   object        
 1   LodgementDate         1238 non-null   object        
 2   ApplicantName         1238 non-null   object        
 3   ApplicationDesc       1238 non-null   object        
 4   ApplicationType       1238 non-null   object        
 5   Decision              1238 non-null   object        
 6   ApprovalDate          1238 non-null   datetime64[ns]
 7   Authority             1235 non-null   object        
 8   ApprovalConditions    1238 non-null   object        
 9   Fees                  1238 non-null   float64       
 10  WorkCommencementDate  0 non-null      float64       
 11  Application_Date      1238 non-null   datetime64[ns]
 12  Consents              1238 non-null   object        
 13  CommenceDate          1238 non-null   datetime64[ns]
 14  CompleteDate          1238 non-null   object        
 15  ValueOfDevelopment    1238 non-null   float64       
 16  NumDwellings          1238 non-null   int64         
 17  Month                 1238 non-null   int64         
 18  Approval Months       1238 non-null   int64         
dtypes: datetime64[ns](3), float64(3), int64(3), object(10)
memory usage: 193.4+ KB
In [43]:
# lets change to the monetary values t to integer
register_df['Fees'] = register_df['Fees'].astype(int)
register_df['ValueOfDevelopment'] = register_df['ValueOfDevelopment'].astype(int)
register_df['Fees'].info()
register_df['ValueOfDevelopment'].info()
<class 'pandas.core.series.Series'>
Int64Index: 1238 entries, 1 to 3974
Series name: Fees
Non-Null Count  Dtype
--------------  -----
1238 non-null   int32
dtypes: int32(1)
memory usage: 14.5 KB
<class 'pandas.core.series.Series'>
Int64Index: 1238 entries, 1 to 3974
Series name: ValueOfDevelopment
Non-Null Count  Dtype
--------------  -----
1238 non-null   int32
dtypes: int32(1)
memory usage: 14.5 KB

1 Which month had the highest fees collection during approvals¶

In [45]:
# Load in some packages
import calendar
import warnings
import pandas as pd
import matplotlib.pyplot as plt
from itertools import combinations
from collections import Counter

warnings.filterwarnings("ignore")



# Replace NaN or inf values in the 'Month' column with a default value (e.g., 0)
register_df['Approval Months'] = register_df['Approval Months'].fillna(0).astype(int)

# Convert month numbers to abbreviated month names
register_df['Approval Months Name'] = register_df['Approval Months'].apply(lambda x: calendar.month_abbr[x])

# Group by month and calculate total sales for each month
fees_by_month = register_df.groupby('Approval Months Name').sum()['Fees']

# Find the highest month for expense 
highest_month = fees_by_month.idxmax()
fees_for_best_month = fees_by_month.max()

print(f"The Highest month for highest Fees collected was {highest_month} with a value of ${fees_for_best_month :,.2f}")
The Highest month for highest Fees collected was Feb with a value of $74,633.00
In [51]:
import pandas as pd
import matplotlib.pyplot as plt

# Assuming you already have 'fees_by_month' DataFrame and other necessary variables

# Set the index of fees_by_month DataFrame to 'Approval Months Name'
fees_by_month.index.name = None  # Remove index name for better visualization
fees_by_month = fees_by_month.reindex(calendar.month_abbr[1:], fill_value=0)

# Plotting
plt.figure(figsize=(10, 6))
fees_by_month.plot(kind='bar', color='skyblue')
plt.title('Total Fees Collected by Month')
plt.xlabel('Month')
plt.ylabel('Total Fees')
plt.xticks(rotation=45)
plt.tight_layout()

plt.show()

2 Which month had the highest Value of Developement collection during application date¶

In [52]:
# Group by month and calculate total sales for each month
development_value_by_month = register_df.groupby('Approval Months Name').sum()['ValueOfDevelopment']

# Find the highest month for expense 
highest_month = development_value_by_month.idxmax()
development_value_for_best_month = development_value_by_month.max()

print(f"The Highest month for highest Fees collected was {highest_month} with a value of ${development_value_for_best_month  :,.2f}")
The Highest month for highest Fees collected was Feb with a value of $31,736,401.00
In [56]:
# Set the index of fees_by_month DataFrame to 'Approval Months Name'
development_value_by_month .index.name = None  # Remove index name for better visualization
development_value_by_month  =development_value_by_month .reindex(calendar.month_abbr[1:], fill_value=0)

# Plotting
plt.figure(figsize=(10, 6))
fees_by_month.plot(kind='bar', color='purple')
plt.title('Development Value Collected by Month')
plt.xlabel('Month')
plt.ylabel('Development Value')
plt.xticks(rotation=45)
plt.tight_layout()

plt.show()

3 Display to Top 5 Applicants Type interms of Development value¶

In [62]:
# Plot the highest expense  for each  application type

development_value_by_applicant_type = register_df.groupby('ApplicationType').sum()['ValueOfDevelopment'] 

# Sort the values in descending order and select the top five
top_five_development_value_by_applicant_type= development_value_by_applicant_type .sort_values(ascending=False).head(5)

# Display the result
print(top_five_development_value_by_applicant_type)

# Plot the top five County
top_five_development_value_by_applicant_type.plot(kind='bar', color='green', figsize=(10, 6))
plt.title('Top Five Applicants Type with the highest Developmentt Value ')
plt.xlabel('Applicant Type')
plt.ylabel('Development Value')
plt.show()
ApplicationType
Planning and Building Application    235357528
New Application Lodgement              4821000
Building Application Only              2763669
Planning Application Only               549323
Name: ValueOfDevelopment, dtype: int32

4 Display to Top 5 Applicants interms of Development value¶

In [60]:
# Plot the highest expense  for each applicants

development_value_by_applicant = register_df.groupby('ApplicantName').sum()['ValueOfDevelopment'] 

# Sort the values in descending order and select the top five
top_five_development_value_by_applicant= development_value_by_applicant.sort_values(ascending=False).head(5)

# Display the result
print(top_five_development_value_by_applicant)

# Plot the top five County
top_five_development_value_by_applicant.plot(kind='bar', color='brown', figsize=(10, 6))
plt.title('Top Five Applicants with the highest Developmentt Value ')
plt.xlabel('Applicant Name')
plt.ylabel('Development Value')
plt.show()
ApplicantName
Construction Services Aust Pty Ltd    108360536
Fairmont Homes Group Pty Ltd           28477881
Maybach Property Group                 15261180
Metricon Homes Pty Ltd                 12093855
Sterling Homes Pty Ltd                 11520448
Name: ValueOfDevelopment, dtype: int32

6 Which Applicant had the highest application¶

In [64]:
register_df['ApplicantName'].value_counts()
Out[64]:
Construction Services Aust Pty Ltd    524
Fairmont Homes Group Pty Ltd          129
Maybach Property Group                 78
Sterling Homes Pty Ltd                 53
Metricon Homes Pty Ltd                 43
                                     ... 
Mr S D Johnson                          1
Mr A S Pickett                          1
Design Constructive Pty Ltd             1
Adelaide Insurance Builders             1
Sagle Constructions Pty Ltd             1
Name: ApplicantName, Length: 158, dtype: int64

7 What is the average fees paid¶

In [65]:
register_df['Fees'].mean()

rounded_mean = round(register_df['Fees'].mean())
print(rounded_mean)
423

8 Provide a schedule for applications above the average fees¶

In [66]:
register_df[register_df.where(register_df['Fees']>423,other=0).all(1)]
Out[66]:
ApplicationNumber LodgementDate ApplicantName ApplicationDesc ApplicationType Decision ApprovalDate Authority ApprovalConditions Fees WorkCommencementDate Application_Date Consents CommenceDate CompleteDate ValueOfDevelopment NumDwellings Month Approval Months Approval Months Name
19 29217/2020 9/01/2020 12:00:00 AM Construction Services Aust Pty Ltd Construction of a detached dwelling with attac... Planning and Building Application Development Application Approved ... 2020-01-23 16:40:44 Council ... Sub-report here 499 NaN 2020-09-01 Development Plan Consent Granted (13/01/2020),... 2020-02-24 12:11:26 23/04/2020 10:05:09 AM 231800 2 1 1 Jan
22 29219/2020 9/01/2020 12:00:00 AM Construction Services Aust Pty Ltd Construction of a detached dwelling with attac... Planning and Building Application Development Application Approved ... 2020-01-30 11:51:57 Council ... Sub-report here 558 NaN 2020-09-01 Development Plan Consent Granted (13/01/2020),... 2020-02-24 12:12:15 14/04/2020 10:51:56 AM 279019 2 1 1 Jan
25 29222/2020 9/01/2020 12:00:00 AM Construction Services Aust Pty Ltd Construction of a detached dwelling with attac... Planning and Building Application Development Application Approved ... 2020-05-02 14:28:24 Council ... Sub-report here 436 NaN 2020-09-01 Development Plan Consent Granted (14/01/2020),... 2020-02-03 10:20:09 21/04/2020 10:47:27 AM 181837 2 5 5 May
36 29234/2020 13/01/2020 12:00:00 AM Maybach Property Group Construction of a detached dwelling with attac... Planning and Building Application Development Application Approved ... 2020-04-02 10:33:56 Council ... Sub-report here 469 NaN 2020-01-13 Development Plan Consent Granted (16/01/2020),... 2020-06-18 12:51:39 27/03/2020 10:34:10 AM 208000 2 4 4 Apr
63 29259/2020 16/01/2020 12:00:00 AM Rossdale Homes Pty Ltd Construction of a detached dwelling with attac... Planning and Building Application Development Application Approved ... 2020-05-03 11:51:46 Council ... Sub-report here 515 NaN 2020-01-16 Development Plan Consent Granted (29/01/2020),... 2020-04-05 10:33:52 17/07/2020 11:05:29 AM 245000 2 5 5 May
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3391 292443/2021 12/02/2021 12:00:00 AM Construction Services Aust Pty Ltd Construction of a detached dwelling Planning and Building Application Work Completed ... 2021-01-03 10:52:54 Council ... Sub-report here 499 NaN 2021-12-02 Development Plan Consent Granted (21/02/2021),... 2021-04-28 10:54:30 18/08/2021 11:56:18 AM 228399 2 1 1 Jan
3392 292444/2021 12/02/2021 12:00:00 AM Construction Services Aust Pty Ltd Construction of a detached dwelling Planning and Building Application Work Completed ... 2021-03-03 09:45:32 Council ... Sub-report here 461 NaN 2021-12-02 Development Plan Consent Granted (26/02/2021),... 2021-04-28 11:02:12 12/11/2021 10:02:02 AM 197869 2 3 3 Mar
3471 292522/2021 17/02/2021 12:00:00 AM Construction Services Aust Pty Ltd Construction of a detached dwelling Planning and Building Application Work Completed ... 2021-03-25 16:42:17 Council ... Sub-report here 496 NaN 2021-02-17 Development Plan Consent Granted (02/03/2021),... 2021-04-28 10:33:46 3/09/2021 11:35:24 AM 226113 2 3 3 Mar
3474 292525/2021 17/02/2021 12:00:00 AM Construction Services Aust Pty Ltd Construction of a detached dwelling Planning and Building Application Work Completed ... 2021-03-17 13:42:44 Council ... Sub-report here 455 NaN 2021-02-17 Development Plan Consent Granted (09/03/2021),... 2021-06-18 16:25:19 19/11/2021 11:06:43 AM 193340 2 3 3 Mar
3475 292526/2021 17/02/2021 12:00:00 AM Construction Services Aust Pty Ltd Construction of a detached dwelling Planning and Building Application Work Completed ... 2021-04-22 16:02:37 Council ... Sub-report here 472 NaN 2021-02-17 Development Plan Consent Granted (13/04/2021),... 2021-07-16 14:03:42 10/03/2022 2:38:06 PM 206588 2 4 4 Apr

119 rows × 20 columns